package com.ostrich.a2104gao5

/**
 * @Author : yaotianxue
 * @Time : On 2023/10/13 15:27
 * @Description : Test4
 */
fun main(){
    val result = method("张三")
    println(result)
    val resultStr = result.invoke()//执行函数
    println(resultStr)

    //调用高阶函数
    val result1 = method1("张三")
    println(result1)
    val resultStr1 = result1.invoke()
    println(resultStr1)

    val result2 = method2("张三")
    println(result2)
    val resultStr2 = result2.invoke(34)
    println(resultStr2)


    val result3 = method3("张三")
    println(result3)
    val resultStr3 = result3.invoke(34,"bawei")
    println(resultStr3)

}
//参数：name
//返回值：()->String 函数类型
fun method(name:String):()->String{
    return {
        "我是高阶函数的返回的函数数据 $name"
    }
}

//参数：name
//返回值：()->Unit 函数类型 无参数无返回值
fun method1(name: String):()->Unit{
    return{
        println("我是高阶函数的返回的函数数据 $name")
    }
}

//参数:name
//返回值：(age:Int)->String 函数类型 有参数int有返回值String
fun method2(name: String):(age:Int)->String{
    return {
        "我是高阶函数的返回的函数数据 $name 年龄为 $it"
    }
}
//参数:name
//返回值：(age:Int,school:String)->String 函数类型 有2个参数有返回值String
fun method3(name: String):(age:Int,school:String)->String{
    return { age:Int,school:String->
        "我是高阶函数的返回的函数数据 学校$school 年龄为 $age 姓名 $name"
    }
}
